Questa funzione permette di parametrizzare i contatori utilizzati a dei fini di numerazione automatica di documenti o di schede (su lunghezze che variano in funzione del contesto, ma che possono arrivare fino a 20 caratteri).

Un contatore è identificato da un codice alfanumerico di 3 caratteri. Permette di generare delle chiavi alfanumeriche che possono risultare dal concatenamento di più componenti (di cui almeno uno - il numero di sequenza - è una parte numerica che si incrementerà ad ogni attribuzione). Fatta la parametrizzazione del contatore, si può attribuire questo contatore ad uno o più documenti.

Una funzione di assegnazione dei contatori permette di associare ad un certo numero di documenti i contatori che si utilizzerà per numerarli, ma esistono anche assegnazioni di contatori a vari livelli o più mirate (per esempio nelle schede che definiscono le categorie, o nei valori dei parametri ad esempio).

Quando si realizzano numerazioni automatiche dei documenti, è importante fare attenzione a non avere omonimi, quando si utilizzano due contatori diversi per dati che devono avere delle chiavi univoche. Tenendo conto della flessibilità di definizione dei contatori, il software non può fare automaticamente un controllo di questo tipo. La conseguenza di una errata definizione di questo tipo sarebbe l'apparizione di un errore al momento dell'attribuzione del numero, e quindi di un annullamento della transazione in corso.

Quando un contatore è creato ex novo o se non gli è mai stato dato un numero (per il sito e/o la società e/o il periodo e/o il complemento dato secondo le regole di definizione), il primo numero che viene attribuito di default è 1. Ma esiste una funzione di definizione dei valori iniziali dei contatori che permette di far iniziare la numerazione da un'altra cifra. Questa funzione è particolarmente utile in caso di ripresa dati, affinché la numerazione dei documenti creati dal sistema riparta nella giusta sequenza dopo l'ultimo numero ripreso. Attenzione, la modifica di questa sequenza deve essere bloccata agli utenti in un contesto di gestione normale, e servire solo al momento della fase iniziale di ripresa.

Prerequisiti

SEEREFERTTO Riferirsi alla documentazione di Implementazione

Gestione videata

Videata di inserimento

Presentazione

La parametrizzazione dei contatori si fa su un solo folder. Oltre al codice del contatore, si definiscono anche le caratteristiche generali e la struttura dettagliata dei caratteri che partecipano alla composizione del contatore. Questa struttura si definisce in un riquadro di componenti, di cui si definisce la lunghezza.

I componenti possibili sono descritti nel riquadro che segue:

Chiudi

 

Campi

I seguenti campi sono presenti in questo folder :

Blocco numero 1

Questo codice identifica un contatore che può essere utilizzato per la numerazione automatica dei documenti. Un contatore è un campo di tipo alfanumerico da 1 a 20 caratteri. E' composto da una sequenza di sotto-campi che possono essere di diversi tipi e che saranno concatenati da sinistra a destra per formare il valore del contatore. 

  • Descrizione (campo DES)

Destiné à figurer sur les états et les écrans dans lesquels le code de la fiche peut être saisi ou sélectionné. Ce texte permet de donner une description de la fiche concernée.

Livello definizione

  • Livello definizione (campo NIVDEF)

Il Livello di definizione può assumere i valori Dossier, Società, Sito. Permette di definire se si deve disporre di una sequenza di numerazione univoca per tutto il dossier, definita per società, o per sito.

Per evitare gli omonimi, ciò presuppone che si inseriscano nel contatore i componenti appropriati, in particolare il sito e/o la società.

Reset

  • Reset (campo NIVRAZ)

Questo livello di definizione permette di sapere se si possiede un valore di contatore univoco nel tempo, o per mese o ancora per anno, esercizio o periodo contabile. Per evitare gli omonimi, ciò presuppone che nel contatore si inseriscano i componenti adeguati, in particolare l'anno, il mese, il giorno o la settimana.

La combinazione di questo parametro con il Livello di definizione e con la presenza di un componente Complemento definisce quante sequenze di numerazione saranno assegnate al contatore (questo andrà da una sequenza univoca ad una sequenza per mese, per sito e per valore di complemento).

In funzione di questi due parametri, si possono introdurre dei componenti allo scopo di evitare dei problemi di omonimia. Così, per esempio, se si definisce un Livello di reset uguale all'anno, occorre che l'anno figuri nel contatore. Allo stesso modo, se si definiscono dei contatori per società, occorre che il sito o la società si trovino nella struttura del contatore.

Tipo

  • Tipo (campo TYP)

Un contatore comporta sempre delle chiavi alfanumeriche. Se il tipo qui dichiarato è però numerico, si elimineranno gli zeri all'inizio del valore restituito. Un contatore dichiarato quindi numerico di 6 cifre inizierà con il valore "1", mentre un contatore alfanumerico di 6 cifre inizierà con il valore "000001". Attenzione, se il contatore è dichiarato come numerico e dei componenti alfabetici sono stati dichiarati nella struttura del contatore, non verrà effettuato alcun controllo alla creazione, ma all'utilizzo verrà riportata soltanto la parte numerica all'inizio del contatore.

Riquadro Componenti

  • N° (campo NUMLIG)

Numero della riga.

  • Tipo componente (campo POSTYP)

Ogni componente del contatore possiede un tipo descritto nella documentazione generale sui contatori.

  • Lunghezza (campo POSLNG)

Viene indicata qui la lunghezza del componente.

Esistono dei limiti a seconda del tipo di componenti:

  • una costante è di massimo 10 caratteri.
  • l'anno viene definito su 1,2, o 4 caratteri.
  • la settimana viene definita su 2 caratteri.
  • il mese viene definito su 2 o 3 caratteri (in questo caso, è l'abbreviazione inglese del mese su 3 lettere).
  • il giorno viene definito su 1, 2, o 3 caratteri (su 1 carattere, è il numero del giorno nella settimana, su 2 caratteri, è il numero del giorno nel mese: su 3 caratteri, è il numero del giorno nell'anno).
  • la società viene definita da 1 a 5 caratteri.
  • il sito viene definito da 1 a 3 caratteri.
  • Formula (campo POSCTE)

Viene definito il valore di una parte costante del contatore. Può essere un qualsiasi alfanumerico (compresi caratteri speciali come "-/.").

Blocco numero 6

  • Tipo di sequenza (campo SEQ)

Questo campo definisce il modo in cui sono gestiti i contenziosi multi-utente in attribuzione del numero. Salvo il problema particolare collegato ad un grande numero di utenti concorrenti, si consiglia di utilizzare il tipo Normale. Si troveranno nella documentazione dei contatori maggiori spiegazioni su questo campo.

Quando il contatore è di tipo Sequenza, si specifica qui la tabella del database la cui sequenza è utilizzata. In principio, è la tabella principale in cui si trovano i documenti numerati.

  • N° di numeri (campo SEQNBR)

Nel caso di un contatore di tipo Raggruppato, questo campo definisce la quantità di numeri attribuiti contemporaneamente.

Diversi

  • Controllo cronologia (campo CTLCHR)

Tale flag permette di attivare o meno il controllo di cronologia per quei documenti la cui legislazione corrente impone un controllo cronologico dei numeri in relazione alla data di inserimento (è il caso di alcuni documenti in alcune legislazioni, quella italiana in particolare).

Permette di evitare che un movimento logicamente datato ad una data D1 possa essere creato con un numero successivo ad un movimento logicamente datato ad una data D2 successiva a D1 (questo indipendentemente dalla data di creazione effettiva del movimento).

  • Lunghezza (campo LNG)

Questo campo indica la lunghezza totale dei numeri creati dal contatore.

  • Reset (campo ZERO)

Se questa casella è contrassegnata, il contatore sarà rimesso a 0 dall'utility di reset dossier, in caso contrario il suo valore sarà conservato.

Definito dalla tabella diversa 909, questo codice collegato alla società permette di predefinire delle regole, soprattutto contabili, e dei parametri. In particolare, i parametri generali possono essere definiti a livello della legislazione.

Chiudi

 

Tipo Componente

Spiegazione

Costante

Stringa fissa di caratteri il cui valore è inserito nella colonna Formula (tale e quale, cioè senza metterla tra apici singoli o doppi).

Anno

Su una cifra (L'ultimo dell'anno tra 0 e 9), due cifre (tra 00 e 99), e quattro cifre

Esercizio

Da uno a tre cifre, si definisce qui il numero di esercizio (valore uguale a 1 per il primo esercizio aperto). L’interesse di questa numerazione risiede nel caso in cui si lavori con degli esercizi non solari (in questo caso, si ha una rottura nella numerazione quando si cambia l'anno, cosa che può capitare nel mezzo dell’esercizio fiscale)

Periodo

Da una a tre cifre, viene qui definito il numero di periodo (che comincia con 1 e che può raggiungere il numero massimo di periodi dell'esercizio).

Mese

Su due cifre (da 00 a 12), o su tre caratteri (in questo caso, sono utilizzati i primi tre caratteri del nome inglese del mese: JAN/FEB/MAR/APR...)

Settimana

Su 2 cifre (da 00 a 53)

Giorno

Sia su una cifra (si tratta allora del numero del giorno della settimana, che varia da 1 a 7), sia su due cifre (è allora il giorno nell'arco del mese che varia da 01 a 31), sia su tre cifre (è allora il numero del giorno nell'arco dell'anno, che varia da 001 a 366)

Società

Codice società al quale è attribuito il movimento (da uno a cinque caratteri)

Sito

Codice sito al quale è attribuito il movimento (da uno a tre caratteri)

Sequenza

Parte progressiva del contatore (si incrementerà in passi di 1 (essendo 1 il primo valore attribuito).

Complemento

Parametro complementare il cui valore dipende dal modulo che utilizza il contatore.

Formula

Permette di inserire nel contatore una parte interpretata da uno a venti caratteri. La formula viene inserita in seguito. Contrariamente al complemento, di cui ogni valore ha la propria cronologia, un contatore che integra una formula interpretata utilizza un contatore indipendente dal risultato della valutazione. La formula può essere di tipo alfanumerico, numerico o data, ma se contiene dei caratteri alfabetici, questi sono trasformati in maiuscolo e l'insieme viene formattato sul numero esatto di caratteri previsti.

Osservazioni importanti

Il campo complemento

Il codice complemento permette di definire un segmento di contatore che dipende dal contesto, senza dover definire due contatori diversi. E' importante sapere che, in questo caso, esiste una sequenza cronologica per ogni valore diverso preso dal complemento.

L'utilizzo del codice complemento dipende dal contesto funzionale utilizzato da ogni applicazione scritta in tecnologia adonix.

Nel caso del supervisore, il codice complemento è utilizzabile per il contatore dei numeri di lotto nel transito import-export. Contiene il codice del modello di import-export utilizzato.

L'elenco dei codici complementi usati nei moduli principali di ogni applicazione è definito in una documentazione allegata.

In tutti gli altri casi, non viene assegnato il numero di complemento. D'altro canto è possibile, con un semplice sviluppo specifico, basandosi un entry point dedicato, dare un valore particolare al numero di complemento in un dato contesto.

E' possibile integrare il codice complemento in una sequenza di numerazione, senza però usare una sequenza diversa per valore di contatore. Per realizzare tutto ciò, occorre usare un componente di tipo Formula valutata, dando come formula [L]COMPLEMENT (COMPLEMENT è la variabile locale conosciuta del sotto programma di numerazione che memorizza il valore corrente del complemento).

I tipi di sequenza

Questo parametro può avere un'importanza quando ci si trova nel caso di installazioni clienti con un gran numero di postazioni e un'importante attività di creazione di documenti di un dato tipo. Infatti, a seconda del tipo di sequenza che si utilizza, ci può essere una contesa più o meno forte. Per contesa si intendono i conflitti transazionali collegati all'ottenimento dei numeri dei contatori. Infatti:

Quando si utilizza un contatore Normale

L'attribuzione del numero, essenzialmente durante la creazione di un documento (ordine, movimento, fattura...) si fa nella transazione di creazione stessa. Ciò significa che in caso di abbandono della transazione tramite Rollback, il numero non viene perso. In compenso, fino a quando la transazione di creazione (che può durare alcuni secondi) non è terminata, ogni transazione concorrente di creazione dello stesso tipo di documento non potrà ottenere un numero e non andrà a buon fine. Verrà effettuato allora un Rollback della transazione concorrente, seguito da un nuovo tentativo, (che questa volta andrà a buon fine se la prima transazione è terminata).

Il numero di tentativi successivi realizzati in caso di blocco di questo tipo prima dell'abbandono della transazione è parametrizzabile dal parametro ROLLBACK del capitolo SUP. In caso di contesa, è quindi possibile aumentare il valore di questo parametro, ma occorre essere coscienti che il consumo di risorse del server di dati può aumentare a scapito delle performances, ed è anche possibile giocare sul tipo di sequenza per migliorare le cose.

A fronte di tale contesa, il contatore Normale garantisce però un rispetto dell'ordine sequenziale nel tempo: due richiami successivi nel tempo ad un dato contatore daranno dei numeri crescenti, essendo uguali tutte le condizioni collegate alla struttura del contatore (società, sito, periodo, complemento). Proprio perchè non interviene nessuna perdita di numero relativa ad un blocco, si consiglia questo tipo di contatore per i documenti fiscali per i quali si esigono allo stesso tempo delle sequenze rigide e nessun salto di numerazione.

Quando si utilizza un contatore Raggruppato

L'attribuzione di numeri si effettua per gruppo di N numeri (essendo N definito a parametro). La contesa è quindi meno importante, poichè solo una attribuzione su N provoca una contesa, in quanto le altre attribuzioni utilizzano un numero disponibile.

Contrariamente, l'assegnanzione sequenziale dei numeri non è garantita ed è possibile una perdita di numeri per i contatori che dipendono da mese o dal periodo. Infatti, si immagini per esempio che N valga 10, che i numeri da 1 a 8 siano già stati attribuiti e che si realizzino 3 creazioni simultanee. Alla prima verrà assegnato il numero 9 ; alla seconda il numero 10, e la terza non troverà nessun numero disponibile nella prima tranche di 10 numeri. Si creeranno quindi i numeri da 11 a 20 e si attribuirà sia il primo numero tra di loro, sia l'11. Se nel frattempo la prima transazione è fallita per altri motivi, il numero 9 diventerà utilizzabile da una nuova transazione. Se non viene lanciata più nessuna transazione, ci si ritrova nella situazione in cui tutti i numeri da 1 a 11, eccetto il 9, sono utilizzati ed i successivi numeri da attribuire saranno (nell'ordine) il 9, il 12 e gli altri a seguire. Quindi non c'è rispetto rigido del numero di sequenza: se in giornata non sussiste nessuna creazione di documento e se un documento viene creato il giorno seguente, si avrà un documento con data del giorno G numerato 11 e un documento con data del giorno G + 1 numerato 9. Infine, se i contatori integrano il numero del mese e se questa situazione arriva alla fine del mese, ci sarà un buco nella numerazione (ma sarà possibile tracciarla, perchè questo numero si trova nell'elenco dei numeri da attribuire).

Quando si utilizza un contatore Sequenza

L’attribuzione del numero si fa fuori transazione, il che significa che non vi è alcun conflitto, ma non è possibile ritornare indietro (se il numero non è utilizzato, è definitivamente perso). Questo tipo di contatore si basa su una sequenza del database. Per ogni tabella del database, ADONIX crea una sequenza che gli è associata normalmente per ottenere un numero tecnico. E' importante notare che questa numerazione non arriva mai a 0 (quindi occorre prevedere un numero alto di cifre associato alla sequenza di numerazione nel contatore), che è strettamente sequenziale (l'ordine dei numeri attribuito è sempre crescente nel tempo), ma ci saranno dei buchi senza la possibilità di giustificarli o di recuperarli. Questa caratteristica li farà utilizzare dal momento in cui si ha bisogno di un solo numero tecnico, per il quale non è necessario nessun giustificativo dei buchi nella sequenza.

Per concludere, il riquadro qui in basso riepiloga i vantaggi e gli svantaggi dei vari tipi di contatore:

TIPO DI CONTATORE

SEQUENZA CRESCENTE

PERDITA DI NUMERI

CONFLITTO MULTI-UTENTI

Normale 

Sempre

Mai

Forte

Raggruppato

Non sempre

A fine periodo, ma giustificabile
(elenco dei numeri persi)

Media (tanto più bassa
quanto più N è grande)

Sequenza

Sempre

Sì, senza giustificazione

Nulla

Bottoni specifici

I seguenti campi sono presenti sulla finestra aperta da questo bottone :

Blocco numero 1

  • campo OBJET

 

  • campo CLES

 

Blocco numero 2

  • Dal dossier (campo DOSORG)

Questo campo permette di definire il dossier a partire dal quale sarà copiata la scheda. Le sintassi possibili sono descritte nell'allegato dedicato.

  • Tutti i dossiers (campo TOUDOS)

Questa opzione permette di copiare la scheda verso tutti i dossier definiti nel dizionario (tabella ADOSSIER della soluzione corrente).

  • Al dossier (campo DOSDES)

Questo campo permette di definire il dossier nel quale sarà copiata la scheda. Le sintassi possibili sono descritte nell'allegato dedicato.

Chiudi

Questo bottone permette di copiare la definizione della scheda da o verso un altro dossier.

Messaggi di errore

Oltre ai messaggi generici, i seguenti messaggi d'errore possono apparire al momento dell'inserimento :

2 Numeri di sequenza

Si è tentato di definire un contatore che ha due componenti di tipo Numero di sequenza (è autorizzato un solo numero di sequenza per contatore)

Valore errato

La lunghezza richiesta non è compatibile con il parametro (per esempio, un anno su 8 cifre o un mese su 5 caratteri)

Lunghezza troppo grande

La lunghezza totale del contatore eccede i 20 caratteri o la somma delle lunghezze dei componenti è diversa dalla lunghezza totale.

Espressione errata / Carattere illegale

La formula di calcolo che è stata inserita non ha una sintassi corretta.

Tipo di tabella: sistema 

Un contatore basato su una sequenza potrà essere basato solo su una tabella presente nel dossier corrente. Non è il caso di questo tipo di tabella.

Tipo di sequenza possibile a livello dossier
Tipo di sequenza autorizzata senza Azzeramento

Un contatore basato su una sequenza di database può permettere una sola sequenza di numerazione (quindi a livello dossier) e non può essere azzerata.

Tabelle utilizzate

SEEREFERTTO Riferirsi alla documentazione di Implementazione